/**
 * 全局事件管理器
 * 用于页面间通信和回调传递
 */

class EventManager {
  constructor() {
    this.listeners = {}
  }
  
  // 注册事件监听器
  on(event, callback) {
    if (!this.listeners[event]) {
      this.listeners[event] = []
    }
    this.listeners[event].push(callback)
    console.log(`📡 [事件管理器] 注册事件监听器: ${event}`)
  }
  
  // 移除事件监听器
  off(event, callback) {
    if (this.listeners[event]) {
      const index = this.listeners[event].indexOf(callback)
      if (index > -1) {
        this.listeners[event].splice(index, 1)
        console.log(`📡 [事件管理器] 移除事件监听器: ${event}`)
      }
    }
  }
  
  // 触发事件
  emit(event, data) {
    if (this.listeners[event]) {
      console.log(`📡 [事件管理器] 触发事件: ${event}`, data)
      this.listeners[event].forEach(callback => {
        try {
          callback(data)
        } catch (error) {
          console.error(`📡 [事件管理器] 事件回调执行失败 [${event}]:`, error)
        }
      })
    } else {
      console.log(`📡 [事件管理器] 没有找到事件监听器: ${event}`)
    }
  }
  
  // 获取事件监听器数量
  getListenerCount(event) {
    return this.listeners[event] ? this.listeners[event].length : 0
  }
  
  // 清理所有事件监听器
  clear() {
    this.listeners = {}
    console.log('📡 [事件管理器] 清理所有事件监听器')
  }
}

// 创建全局单例
const eventManager = new EventManager()

module.exports = eventManager

